<?php
/**
 * 使用 Socket 实现文件下载
 */

$path = './send.png';

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_bind($sock, '0.0.0.0', 9501);

socket_listen($sock);

$fp = fopen($path, 'rb');

$newSock = socket_accept($sock);

while(($buf = fgets($fp, 2048)) !== false) {
    socket_write($newSock, $buf);
}

//$eof = "\n";
//socket_write($sock, $eof, strlen($eof));

// 文件读取完毕，断开输出流，向客户端发送FIN包
socket_shutdown($newSock, 1);
echo "关闭 \n";

// 阻塞，等待客户端接收完毕
$buf = socket_read($newSock, 2048);
echo "客户端下载完成：" . trim($buf);

socket_close($newSock);
socket_close($sock);

fclose($fp);


